Objects can have an object oriented programming (OOP) meaning, as used in Smalltalk or C++ . An OOP object includes data (i.e., variables and states which are not directly viewable) and executable code encapsulating a selected program concept (i.e., behaviors and programmatic methods to which the object responds to). A Smalltalk or C++ object distinguishes between a class and an instance. A class is a template described by a class definition (in Smalltalk by an explicit Class object, in C++ by a class declaration). Each instance is described by the class definition for its class. Class definitions are largely code entities. However, instances contain state information which can vary from instance to instance.
However, irrespective of how defined, currently known distributed objects are organized in a hierarchy controlled at a server node. Such a hierarchical distributed object organization is inflexible, because all control is exercised by a server. For network participants not controlling the server, the result is operational impotence.
Currently, individuals developing object oriented distributed systems may follow a model in which state information with respect to selected objects of a distributed system is replicated in each object with respect to selected other objects of a particular distributed system. Another approach to developing object oriented distributed systems follows a model in which state information with respect to selected objects of a distributed system must be explicitly communicated for each object with respect to selected other objects of a particular distributed system. Either approach is accompanied by undesired overhead which hampers operability. The first form or approach to developing distributed object oriented systems has undue overhead due to excessive replication of state information. The second approach to developing distributed object oriented systems is hampered by excessive communications overhead involving objects obtaining state information from each other. It is according desirable to develop a distributed object oriented system which optimizes the sharing and retention of state information between objects which are established for interoperability with each other.